-- PROCEDIMENTO MONTADORA
CREATE PROCEDURE SP_STAGING_MONTADORA (@DATA_CARGA DATE)
AS
	DECLARE @ID_MONTADORA INT,
			@NM_MONTADORA VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_MONTADORA WHERE DATA_CARGA = @data_carga
	
	DECLARE C_MONTADORA CURSOR FOR
	SELECT IDMONTADORA, NOME FROM DBO.TB_MONTADORA
	
	OPEN C_MONTADORA
		FETCH C_MONTADORA INTO @ID_MONTADORA, @NM_MONTADORA
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO SCH_AREA_STAGING.TB_AUX_MONTADORA (DATA_CARGA, IDMONTADORA, NOME)
			VALUES (@DATA_CARGA, @ID_MONTADORA, @NM_MONTADORA)
			
			FETCH C_MONTADORA INTO @ID_MONTADORA, @NM_MONTADORA
		END
	
	CLOSE C_MONTADORA
DEALLOCATE C_MONTADORA

-- PROCEDIMENTO DA LOJA
CREATE PROCEDURE SP_STAGING_LOJA (@DATA_CARGA DATE)
AS
	DECLARE @ID_LOJA INT, @NM_LOJA VARCHAR(45), @ENDERECO VARCHAR(100), @CIDADE VARCHAR(45),
			@ESTADO VARCHAR(45), @CNPJ VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_LOJA WHERE DATA_CARGA = @data_carga
	
	DECLARE C_LOJA CURSOR FOR
		SELECT IDLOJA, NOME, ENDERECO, CIDADE, ESTADO, CNPJ FROM DBO.TB_LOJA
	
	OPEN C_LOJA
	FETCH C_LOJA INTO @ID_LOJA, @NM_LOJA, @ENDERECO, @CIDADE, @ESTADO, @CNPJ
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		INSERT INTO SCH_AREA_STAGING.TB_AUX_LOJA (DATA_CARGA, IDLOJA, NOME, ENDERECO, CIDADE, ESTADO, CNPJ)
			VALUES (@DATA_CARGA, @ID_LOJA, @NM_LOJA, @ENDERECO, @CIDADE, @ESTADO, @CNPJ)
			
		FETCH C_LOJA INTO @ID_LOJA, @NM_LOJA, @ENDERECO, @CIDADE, @ESTADO, @CNPJ
	END
	
	CLOSE C_LOJA
	DEALLOCATE C_LOJA
	
	
-- PROCEDIMENTO FUNCIONARIO
CREATE PROCEDURE SP_STAGING_FUNCIONARIO (@DATA_CARGA DATE)
AS
	DECLARE @IDFUNCIONARIO INT, @CPF VARCHAR(11), @NM_FUNCIONARIO VARCHAR(70),
			@ENDERECO VARCHAR(200), @CIDADE VARCHAR(45), @ESTADO VARCHAR(45),
			@DATA_NASCIMENTO DATE, @TELEFONE VARCHAR(45),
			@DATA_ENTRADA DATE, @CARGO VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_FUNCIONARIO WHERE DATA_CARGA = @data_carga
	
	DECLARE C_FUNCIONARIO CURSOR FOR
		SELECT F.IDFUNCIONARIO, F.CPF, F.NOME, F.ENDERECO, F.CIDADE, F.ESTADO,
			   F.DATA_NASCIMENTO, F.TELEFONE, F.DATA_ENTRADA, C.DESCRICAO
			FROM DBO.TB_FUNCIONARIO F
			INNER JOIN DBO.TB_CARGO C ON (C.IDCARGO = F.IDCARGO)
	
	OPEN C_FUNCIONARIO
	FETCH C_FUNCIONARIO INTO @IDFUNCIONARIO, @CPF, @NM_FUNCIONARIO, @ENDERECO, @CIDADE, @ESTADO,
							 @DATA_NASCIMENTO, @TELEFONE, @DATA_ENTRADA, @CARGO
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		INSERT INTO SCH_AREA_STAGING.TB_AUX_FUNCIONARIO 
			(DATA_CARGA, IDFUNCIONARIO, CPF, NOME, ENDERECO, CIDADE, ESTADO, DATA_NASCIMENTO, TELEFONE, DATA_ENTRADA, CARGO)
			VALUES 
			(@DATA_CARGA, @IDFUNCIONARIO, @CPF, @NM_FUNCIONARIO, @ENDERECO, @CIDADE, @ESTADO, @DATA_NASCIMENTO, @TELEFONE,
			 @DATA_ENTRADA, @CARGO)
			
		FETCH C_FUNCIONARIO INTO @IDFUNCIONARIO, @CPF, @NM_FUNCIONARIO, @ENDERECO, @CIDADE, @ESTADO,
							 @DATA_NASCIMENTO, @TELEFONE, @DATA_ENTRADA, @CARGO
	END
	
	CLOSE C_FUNCIONARIO
	DEALLOCATE C_FUNCIONARIO
	
	
-- PROCEDIMENTO TIPO PAGAMENTO
CREATE PROCEDURE SP_STAGING_TIPO_PAGAMENTO (@DATA_CARGA DATE)
AS
	DECLARE @IDTIPOPAGAMENTO INT, @DESCRICAO VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_TIPO_PAGAMENTO WHERE DATA_CARGA = @data_carga
	
	DECLARE C_TIPO_PAGAMENTO CURSOR FOR
		SELECT IDTIPOPAGAMENTO, DESCRICAO
			FROM DBO.TB_TIPO_PAGAMENTO
	
	OPEN C_TIPO_PAGAMENTO
	FETCH C_TIPO_PAGAMENTO INTO @IDTIPOPAGAMENTO, @DESCRICAO
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		INSERT INTO SCH_AREA_STAGING.TB_AUX_TIPO_PAGAMENTO
			(DATA_CARGA, IDTIPOPAGAMENTO, DESCRICAO)
			VALUES 
			(@DATA_CARGA, @IDTIPOPAGAMENTO, @DESCRICAO)
			
		FETCH C_TIPO_PAGAMENTO INTO @IDTIPOPAGAMENTO, @DESCRICAO
	END
	
	CLOSE C_TIPO_PAGAMENTO
	DEALLOCATE C_TIPO_PAGAMENTO
	
-- PROCEDIMENTO CARRO
CREATE PROCEDURE SP_STAGING_CARRO (@DATA_CARGA DATE)
AS
	DECLARE @IDCARRO INT, @NOME VARCHAR(45), @ANO INT, @QTD_PORTAS INT, @AR_CONDICIONADO VARCHAR(45),
			@NUM_CHASSIS VARCHAR(45), @PRECO DECIMAL(10,2), @COR VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_CARRO WHERE DATA_CARGA = @data_carga
	
	DECLARE C_CARRO CURSOR FOR
		SELECT TP.IDCARRO, TP.NOME, TP.ANO, TP.QTD_PORTAS, TP.AR_CONDICIONADO, TP.NUM_CHASSIS, TP.PRECO, TP.COR
			FROM DBO.TB_CARRO TP
	
	OPEN C_CARRO
	FETCH C_CARRO INTO @IDCARRO, @NOME, @ANO, @QTD_PORTAS, @AR_CONDICIONADO, @NUM_CHASSIS, @PRECO, @COR
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		INSERT INTO SCH_AREA_STAGING.TB_AUX_CARRO
			(DATA_CARGA, IDCARRO, NOME, ANO, QTD_PORTAS, AR_CONDICIONADO, NUM_CHASSIS, PRECO, COR)
			VALUES 
			(@DATA_CARGA, @IDCARRO, @NOME, @ANO, @QTD_PORTAS, @AR_CONDICIONADO, @NUM_CHASSIS, @PRECO, @COR)
			
		FETCH C_CARRO INTO @IDCARRO, @NOME, @ANO, @QTD_PORTAS, @AR_CONDICIONADO, @NUM_CHASSIS, @PRECO, @COR
	END
	
	CLOSE C_CARRO
	DEALLOCATE C_CARRO
	
-- PROCEDIMENTO CLIENTE
CREATE PROCEDURE SP_STAGING_CLIENTE (@DATA_CARGA DATE)
AS
	DECLARE @IDCLIENTE INT, @CPF VARCHAR(11), @NOME VARCHAR(70), @DATA_NASCIMENTO DATE, @TELEFONE VARCHAR(45),
			@ENDERECO VARCHAR(200), @CIDADE VARCHAR(45), @ESTADO VARCHAR(45)
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_CLIENTE WHERE DATA_CARGA = @data_carga
	
	DECLARE C_CLIENTE CURSOR FOR
		SELECT IDCLIENTE, CPF, NOME, DATA_NASCIMENTO, TELEFONE, ENDERECO, CIDADE, ESTADO
			FROM DBO.TB_CLIENTE
	
	OPEN C_CLIENTE
	FETCH C_CLIENTE INTO @IDCLIENTE, @CPF, @NOME, @DATA_NASCIMENTO, @TELEFONE, @ENDERECO, @CIDADE, @ESTADO
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		INSERT INTO SCH_AREA_STAGING.TB_AUX_CLIENTE
			(DATA_CARGA, IDCLIENTE, CPF, NOME, DATA_NASCIMENTO, TELEFONE, ENDERECO, CIDADE, ESTADO)
			VALUES 
			(@DATA_CARGA, @IDCLIENTE, @CPF, @NOME, @DATA_NASCIMENTO, @TELEFONE, @ENDERECO, @CIDADE, @ESTADO)
			
		FETCH C_CLIENTE INTO @IDCLIENTE, @CPF, @NOME, @DATA_NASCIMENTO, @TELEFONE, @ENDERECO, @CIDADE, @ESTADO
	END
	
	CLOSE C_CLIENTE
	DEALLOCATE C_CLIENTE
	
-- PROCEDIMENTO FATO VENDA
CREATE PROCEDURE SP_STAGING_FATO_VENDA (@DATA_CARGA DATE)
AS
	DECLARE @IDVENDA INT, @IDMONTADORA INT, @IDCLIENTE INT, @IDLOJA INT, @IDCARRO INT,
			@IDFUNCIONARIO VARCHAR(11), @IDTIPOPAGAMENTO INT, @VALOR DECIMAL(10,2), @QTD_PARCELAS INT,
			@VALOR_ENTRADA DECIMAL(10,2), @DATA_VENDA DATE
			
	DELETE FROM SCH_AREA_STAGING.TB_AUX_FATO_VENDA WHERE DATA_CARGA = @data_carga
	
	-- AQUI TEM QUE PEGAR A CHAVE IDFUNCIONARIO E IDCLIENTE
	DECLARE C_VENDA CURSOR FOR
		SELECT V.IDVENDA, V.VALOR, V.QTD_PARCELAS, V.VALOR_ENTRADA, V.IDFUNCIONARIO,
				V.IDCLIENTE, V.IDLOJA, V.IDTIPOPAGAMENTO, V.IDCARRO, V.DATA_VENDA, M.IDMONTADORA
			FROM DBO.TB_VENDA V 
			INNER JOIN DBO.TB_CARRO C ON (C.IDCARRO = V.IDCARRO)
			INNER JOIN DBO.TB_MONTADORA M ON (M.IDMONTADORA = C.IDMONTADORA)
	
	OPEN C_VENDA
	-- ATUALIZAR IDFUNCIONARIO E IDCLIENTE
	FETCH C_VENDA INTO @IDVENDA, @VALOR, @QTD_PARCELAS, @VALOR_ENTRADA, @IDFUNCIONARIO, @IDCLIENTE,
					   @IDLOJA, @IDTIPOPAGAMENTO, @IDCARRO, @DATA_VENDA, @IDMONTADORA
	
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		-- AQUI TEM INSERIR A CHAVE IDFUNCIONARIO E IDCLIENTE
		INSERT INTO SCH_AREA_STAGING.TB_AUX_FATO_VENDA
			(DATA_CARGA, IDVENDA, VALOR, QTD_PARCELAS, VALOR_ENTRADA, IDFUNCIONARIO, IDCLIENTE, IDLOJA,
			 IDTIPOPAGAMENTO, IDCARRO, DATA_VENDA, IDMONTADORA)
			VALUES 
			(@DATA_CARGA, @IDVENDA, @VALOR, @QTD_PARCELAS, @VALOR_ENTRADA, @IDFUNCIONARIO, @IDCLIENTE,
			 @IDLOJA, @IDTIPOPAGAMENTO, @IDCARRO, @DATA_VENDA, @IDMONTADORA)
			
		-- ATUALIZAR IDFUNCIONARIO E IDCLIENTE
		FETCH C_VENDA INTO @IDVENDA, @VALOR, @QTD_PARCELAS, @VALOR_ENTRADA, @IDFUNCIONARIO, @IDCLIENTE,
						   @IDLOJA, @IDTIPOPAGAMENTO, @IDCARRO, @DATA_VENDA, @IDMONTADORA
	END
	
	CLOSE C_VENDA
	DEALLOCATE C_VENDA